<html>
<head>
<script src="../../resources/js-test.js"></script>
<style type="text/css">
.box {
  display: box;
  border: 1px solid black;
  margin-bottom: 0.5em;
}
.boxheader {
  font-weight: bold;
  color: maroon;
}
pre {
  margin-left: 2em;
}
</style>
</head>
<body>

<div id="description"></div>
<div id="console"></div>

<script>
description("Tests XMLHttpRequest 'document' loading with the .responseType and .response attributes.");

var xhr = 0;

function load() {
    testPassed('DONE LOADING');
    testPassed('received response object of type : ' + typeof xhr.response + ".");

    // Make sure exception is thrown if responseType is set too late in the loading process.
    // .responseType was previously set to "document".  Let's try setting it to "arraybuffer".
    try {
        xhr.responseType = "arraybuffer";
    } catch(e) {
        testPassed("exception correctly thrown when xhr.responseType is set to valid value too late in the loading process : " + e + ".");
    }

    // Check that .response is a Document
    if (xhr.response.documentElement.tagName == 'doc')
        testPassed("xhr.response is a Document.");
    else
        testFailed("xhr.response should be a Document.");
    
    // .response is really just an alias to .responseXML when .responseType is set to "document".
    // Make sure they're the same.
    if (xhr.response == xhr.responseXML)
        testPassed("xhr.response == xhr.responseXML.");
    else
        testFailed("xhr.response == xhr.responseXML.");

    xhr = null;
    finishJSTest();
}

function runTest() {
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }

    xhr = new XMLHttpRequest();
    xhr.onload = load;
    xhr.open("GET", "resources/xmlhttprequest-get-data.xml", true);
        
    try {
        if ("responseType" in xhr)
            testPassed("responseType property exists.");
        else
            testFailed("responseType property does not exist.");
        

        if ("response" in xhr)
            testPassed("response property exists.");
        else
            testFailed("response property does not exist.");

        // Make sure we can set responseType to "document" before send() is called.
        try {
            xhr.responseType = "document";
            if (xhr.responseType == "document")
                testPassed("xhr.responseType has been correctly set to 'document'.");
        } catch(e) {
            testFailed("unable to set xhr.responseType to 'document' " + e + ".");
        }
    } catch(e) {
        testFailed("Caught exception " + e + ".");
    }

    xhr.send(null);
    window.jsTestIsAsync = true;
}

runTest();

</script>


</body>
</html>
